home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
dir
/
dum2
/
src
/
dudir.def
next >
Wrap
Text File
|
1987-05-28
|
2KB
|
78 lines
DEFINITION MODULE DuDir;
(* MODULE to read the directory of a current device or directory and
place names/sizes into DirTable - also to Sort them in alphabetical
order (case insensitive)
*)
FROM DOSFiles IMPORT FileLock;
FROM Intuition IMPORT IntuitionText;
CONST
MaxMax = 300; (* Changing this allows more/less files *)
(* eats mucho runtime memory 37 bytes ea *)
(* 300 is enough even for my M2: dir *)
TYPE
DirInfo = RECORD
FileName : ARRAY[0..30] OF CHAR;
IsDir : BOOLEAN;
IsSelected : BOOLEAN;
WasSelected : BOOLEAN;
FileSize : LONGCARD;
END;
DirPtr = POINTER TO DirInfo;
VAR
DirEntries : CARDINAL;
FileText : IntuitionText;
(* This table is full of pointers to allocated memory for storing
directory entries *)
DirTable : ARRAY[0..MaxMax] OF DirPtr;
MaxFiles : CARDINAL;
(*--------------------*)
PROCEDURE ReadDirectory(lock:FileLock):BOOLEAN;
(* Returns true if good read
DirTable[0] contains the directory record and name.
DirTable[1] - DirTable[DirEntries] contains filenames & other info *)
(*------------*)
PROCEDURE QSort;
(* Sort the directory - DirEntries is top 1 is bottom *)
(* Setup is bubble sort now - will change later *)
(* Still - only 4 seconds for 230 files at that *)
(*----------*)
PROCEDURE MoveString(VAR tgt,src:ARRAY OF CHAR; po,le:CARDINAL);
(* move max of 'le' chars of src to tgt[po] *)
(* not including ending null *)
PROCEDURE DisplayName(file,pos:CARDINAL);
PROCEDURE DisplayFiles(ind:CARDINAL);
PROCEDURE NewDir;
(* Display a new directory *)
PROCEDURE ClearTable;
(* MUST call on exit from program to free DirTable memory used *)
END DuDir.